package study.datastructure.link.leetcode;

/**
 * 给定一个已排序的链表的头 head ， 删除所有重复的元素，使每个元素只出现一次 。返回 已排序的链表 。
 */
class Client83 {
    /**
     * 快慢指针法
     * @param head
     * @return
     */
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null||head.next==null){
            return head;
        }
        ListNode p1=head;
        ListNode p2=head.next;

        while (p2!=null) {
            if (p1.val==p2.val) {
                p1.next=p1.next.next;
            }else{
                p1=p1.next;
            }
            p2=p2.next;
        }
        return head;
    }

    /**
     * 递归法 返回的结果
     * @param head
     * @return
     */
    public ListNode deleteDuplicatesByRecursion(ListNode head) {
        if (head == null||head.next==null){
            return head;
        }
       if (head.val==head.next.val){
           return deleteDuplicatesByRecursion(head.next);
       }else {
           head.next=deleteDuplicatesByRecursion(head.next);
       }
        return head;
    }
}